#ifndef __LARGE_INT_H__
#define __LARGE_INT_H__

#include "stdbool.h"
#include "compare.h"

#define LARGE_INT_SIZE		1024

typedef struct
{
	bool minus;
	uint8_t data[LARGE_INT_SIZE];
	uint16_t len;
} sLargeInt_t;

bool largeIntParse(sLargeInt_t *largeIntPtr, const char *intStr);
void largeIntPrint(sLargeInt_t *largeIntPtr);
bool largeIntIsLargerOrEqual(sLargeInt_t *base, sLargeInt_t *comparer);
bool largeIntIsZero(sLargeInt_t *base);
void largeIntAdd(sLargeInt_t *addend, sLargeInt_t *summand, sLargeInt_t *result);
void largeIntSub(sLargeInt_t *subtrahend, sLargeInt_t *minuend, sLargeInt_t *result);
void largeIntMul(sLargeInt_t *multiplicator, sLargeInt_t *multiplicand, sLargeInt_t *result);
// devide is hard to handle...

#endif // __LARGE_INT_H__